package com.zmn.oms.business.interfaces.work;

import com.zmn.oms.common.dro.orderpay.OrderPayResultDRO;
import com.zmn.oms.model.bo.order.OrderBO;
import com.zmn.oms.model.dto.order.OrderDTO;
import com.zmn.oms.model.entity.work.OrderWork;

/**
 * 类描述：客服工单业务接口
 *
 * @author liuying
 * @date 2018/11/02 21:01
 */
public interface OrderWorkBService {

    /**
     * 获取订单信息
     *
     * @param orderId
     * @param workId
     * @return
     */
    OrderBO findOrderWork(Long orderId, Long workId);

    /**
     * 工单处理
     *
     * @param orderDTO
     */
    void processOrderWork(OrderDTO orderDTO);

    /**
     * 修改工单
     *
     * @param orderWork 工单
     * @return
     */
    void updateOrderWork(OrderWork orderWork);

    /**
     * 新增工单
     *
     * @param orderWork 工单
     * @return
     */
    OrderWork insertOrderWork(OrderWork orderWork);

    /**
     * 修改一口价订单为后付
     * @param orderId
     */
    boolean updateFinalPriceOrderToAfterPay(Long orderId);

    /**
     * 校验支付用户
     * @param orderPayResultDRO
     */
    void checkPayUserId(OrderPayResultDRO orderPayResultDRO, Integer plat, Integer receiveEntranceId);

    /**
     * 校验是否可以
     * @param orderWork
     * @return
     */
    boolean checkCanChangeToRework(OrderWork orderWork);

    /**
     * 是否需要等待支付预付款
     * @param order
     * @return false 不需要等待  true 需要等待
     */
    boolean isWaitPrePay(OrderWork order);

    /**
     * 修改工单地址
     *
     * @param orderWork 工单
     * @return
     */
    void updateOrderWorkAddress(OrderWork orderWork);

    /**
     * 修改工程师主管
     *
     * @param orderId
     * @param workId
     * @param masterId
     * @param bizType
     * @param servProductGroupId
     */
    void updateOrderMasterSupervisor(Long orderId, Long workId, Integer masterId, Integer bizType, Integer servProductGroupId);

}
